package com.heima.apis.fallback;

import com.heima.apis.client.IArticleClient;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.enums.AppHttpCodeEnum;
import feign.hystrix.FallbackFactory;



public class IArticleClientFallback implements FallbackFactory<IArticleClient> {


    /**
     * 创建IArticleClient实例的方法
     * 此方法主要用于在发生异常时创建一个IArticleClient的匿名子类实例
     * 实例提供了一个saveArticle方法，该方法在尝试保存文章时总是返回错误结果
     *
     * @param throwable 抛出的异常，用于触发IArticleClient实例的创建
     * @return 返回一个实现了IArticleClient接口的实例，该实例的saveArticle方法总是返回错误结果
     */
    @Override
    public IArticleClient create(Throwable throwable) {
        return new IArticleClient() {
            /**
             * 保存文章的方法
             * 此方法在尝试保存文章时总是返回一个表示服务器错误的响应结果
             *
             * @param articleDto 包含要保存文章的数据传输对象
             * @return 返回一个表示操作结果的ResponseResult对象，在这种情况下总是返回错误结果
             */
            @Override
            public ResponseResult saveArticle(ArticleDto articleDto) {
                return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR,"获取数据失败");
            }
        };
    }
}
